/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import static dao.AlunoDAO.abreConexao;
import static dao.CursoDAO.abreConexao;
import java.util.List;
import model.Aluno;
import model.Curso;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import util.HibernateUtil;

/**
 *
 * @author Adriano
 */
public class CursoDAO {

    private static Session session;
    private static Transaction transaction;

    @BeforeClass
    public static void abreConexao() {
        session = HibernateUtil.getSessionFactory().getCurrentSession();
        transaction = session.beginTransaction();
    }

    @AfterClass
    public void fechaConexao() {
        try {
            transaction.commit();
        } catch (Throwable e) {
            System.out.println("problema no commit" + e.getMessage());
        } finally {
            try {
                if (session.isOpen()) {
                    session.close();
                }
            } catch (Exception e) {
                System.out.println("problema ao fachar conexao" + e.getMessage());
            }
        }
    }

    public Curso getCursoNome(String nomeCurso) {
        String sql = "from Curso c WHERE c.nome like :nome";
        abreConexao();
        Query consulta = session.createQuery(sql);
        consulta.setString("nome", nomeCurso);

        Curso cursoPesquisado = (Curso) consulta.uniqueResult();

        fechaConexao();
        return cursoPesquisado;
    }

    public List<Curso> getCursos() {
        List<Curso> listaCursos = null;
        abreConexao();
        
        try {
            Criteria lista = session.createCriteria(Curso.class);
            listaCursos = lista.list();
        } catch (Exception e) {
            System.out.println("Erro ao carregar lista de cursos" + e);
        } finally {
            fechaConexao();
            return listaCursos;
        }
    }
    
    public Curso getCursoId(Long id) {
        String sql = "from Curso c WHERE c.id = :id";
        abreConexao();
        Query consulta = session.createQuery(sql);
        consulta.setLong("id", id);

        Curso cursoPesquisado = (Curso) consulta.uniqueResult();


        return cursoPesquisado;
    }    
}
